package com.myapp.mobilesafe.utils;

import android.app.admin.DevicePolicyManager;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.widget.Toast;

import com.myapp.mobilesafe.receiver.AdminReceiver;

/**
 * 超级管理员
 * Created by lijie on 2016/4/30.
 */
public class SuperAdmin {
    private static DevicePolicyManager mDPM;
    private static ComponentName mDeviceAdminSample;
    private static Context ctx;


    public static void init(Context content) {
        ctx = content;

        // 设备策略管理器

        mDPM = (DevicePolicyManager) ctx.getSystemService(Context.DEVICE_POLICY_SERVICE);
        // 初始化组件
        mDeviceAdminSample = new ComponentName(ctx, AdminReceiver.class);

        // mDPM.lockNow();
        // finish();
    }

    // 要执行超级管理员功能, 必须激活管理员权限:设置->安全->设备管理器
    public static void lockScreen() {
        if (mDPM.isAdminActive(mDeviceAdminSample)) {// 判断当前是否已经激活
            mDPM.lockNow();// 立即锁屏
            mDPM.resetPassword("123", 0);// 重置密码, 如果要取消密码,传空串""
        } else {
            Toast.makeText(ctx, "您还没有激活超级管理员权限!", Toast.LENGTH_SHORT).show();
        }
    }

    // 激活管理员权限
    public static void activeAdmin() {
        // 跳转到系统激活页面
        Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
        intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN,
                mDeviceAdminSample);
        intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION,
                "需要激活超级管理员才能进行安全防护");
        ctx.startActivity(intent);
    }

    // 一键卸载
    public static void uninstall() {
        // 移除超级管理员权限
        // 跳到系统卸载页面进行卸载
        mDPM.removeActiveAdmin(mDeviceAdminSample);

        Intent intent = new Intent(Intent.ACTION_DELETE);
        intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.setData(Uri.parse("package:" + ctx.getPackageName()));
        ctx.startActivity(intent);
    }

    // 擦除数据
    public static void wipeData() {
        if (mDPM.isAdminActive(mDeviceAdminSample)) {// 判断当前是否已经激活
            mDPM.wipeData(DevicePolicyManager.WIPE_EXTERNAL_STORAGE);// 清除手机内存和sdcard,
            // 0表示只清除手机内存
        } else {
            Toast.makeText(ctx, "您还没有激活超级管理员权限!", Toast.LENGTH_SHORT).show();
        }
    }
    public static Boolean isActived(){
        return mDPM.isAdminActive(mDeviceAdminSample);
    }
}
